package com.example.blog.modules.monitor.service;

import com.example.blog.modules.monitor.dto.SystemMetricsDTO;
import com.example.blog.modules.monitor.dto.MetricsHistoryDTO;
import com.example.blog.modules.monitor.dto.MetricsStatisticsDTO;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

public interface SystemMonitorService {
    
    /**
     * 获取系统指标
     */
    SystemMetricsDTO getSystemMetrics();
    
    /**
     * 获取在线用户数
     */
    long getOnlineUserCount();
    
    /**
     * 获取系统信息
     */
    Map<String, String> getSystemInfo();
    
    /**
     * 获取Redis信息
     */
    Map<String, Object> getRedisInfo();
    
    /**
     * 获取数据库信息
     */
    Map<String, Object> getDatabaseInfo();
    
    /**
     * 记录系统指标
     */
    void recordMetrics();
    
    /**
     * 获取指定时间范围内的监控历史记录
     */
    List<MetricsHistoryDTO> getMetricsHistory(LocalDateTime start, LocalDateTime end);
    
    /**
     * 获取最近N条监控记录
     */
    List<MetricsHistoryDTO> getRecentMetrics(int n);
    
    /**
     * 获取指定时间范围内的监控统计信息
     */
    MetricsStatisticsDTO getMetricsStatistics(LocalDateTime start, LocalDateTime end);
    
    /**
     * 清理指定时间之前的历史记录
     */
    void cleanupHistory(LocalDateTime before);
} 